package cn.tedu._03vehicle.base.interceptors;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.HandlerInterceptor;

import java.time.LocalTime;

/**
 * 限定访问时间的拦截器:要求只能在06:00-23:00之间进行访问
 */
@Slf4j
public class TimeAccessInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.debug("进入访问时间限定的拦截器...");
        /*
            1.获取当前时间[小时];
            2.判断当前时间是否在限定的时间段内06:00-23:00;
              2.1 在:返回true[放行];
              2.2 不在:
                  选择1: 抛出异常,由全局异常处理器处理该异常,返回响应给到客户端;
                  选择2: 首先创建error.html页面,然后重定向到error.html页面,最后返回false;
         */
        LocalTime now = LocalTime.now(); //时间对象
        int hour = now.getHour(); //获取小时
        if (hour < 6 || hour > 22){
            //方案1:手动抛出异常,交由全局异常处理器进行处理;
            //throw new RuntimeException("非常抱歉,只能在06:00-23:00之间进行访问");
            //方案2:重定向到error.html页面;
            //sendRedirect("/error.html"): http://localhost:8080/error.html
            response.sendRedirect("/error.html");
            return false;
        }
        //放行
        return true;
    }
}









